import axios from '@/utils/axios';
import { ElMessage } from 'element-plus';

/**
 * 上传文件到服务器
 * @param {File} file - 要上传的文件对象
 * @param {string} type - 文件类型 'image' 或 'audio'
 * @returns {Promise<{success: boolean, fileUrl: string, fileName: string, error: string}>}
 */
export const uploadFile = async (file, type = 'image') => {
  if (!file) {
    return { success: false, error: '没有选择文件' };
  }

  // 验证文件类型
  if (type === 'image' && !file.type.startsWith('image/')) {
    return { success: false, error: '请选择图片文件' };
  }

  if (type === 'audio' && !file.type.startsWith('audio/')) {
    return { success: false, error: '请选择音频文件' };
  }

  // 验证文件大小 (10MB 限制)
  const MAX_SIZE = 10 * 1024 * 1024;
  if (file.size > MAX_SIZE) {
    return { success: false, error: '文件大小不能超过10MB' };
  }

  try {
    // 创建表单数据
    const formData = new FormData();
    formData.append('file', file);
    formData.append('type', type);

    // 发送请求
    const response = await axios.post('/api/chat/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    });

    if (response.data.success) {
      return {
        success: true,
        fileUrl: response.data.fileUrl,
        fileName: response.data.fileName
      };
    } else {
      return { success: false, error: response.data.message || '上传失败' };
    }
  } catch (error) {
    console.error('文件上传错误:', error);
    return { 
      success: false, 
      error: error.response?.data?.message || '文件上传失败，请稍后重试' 
    };
  }
};

/**
 * 使用外部上传服务上传文件
 * @param {File} file - 要上传的文件对象
 * @returns {Promise<{success: boolean, fileUrl: string, fileName: string, error: string}>}
 */
export const uploadToExternalService = async (file) => {
  if (!file) {
    return { success: false, error: '没有选择文件' };
  }

  try {
    // 创建表单数据
    const formData = new FormData();
    formData.append('file', file);

    // 发送请求到外部服务
    const response = await fetch('http://116.62.231.242:3000/upload', {
      method: 'POST',
      body: formData
    });

    const data = await response.json();
    
    if (response.ok) {
      return {
        success: true,
        fileUrl: data.fileUrl,
        fileName: data.fileName,
        filePath: data.filePath
      };
    } else {
      return { success: false, error: data.error || '上传失败' };
    }
  } catch (error) {
    console.error('外部服务文件上传错误:', error);
    return { 
      success: false, 
      error: error.message || '文件上传失败，请稍后重试' 
    };
  }
}; 